/**
 * PagGerenciaTipos.java
 * 
 * Projeto: SGA-LEDS
 * 
 * Rodrigo Soares Maia
 * IFES - Instituto Federal do Espírito Santo - Campus Serra
 */

package controleAtividades.cih;

import controleAtividades.cci.CtrlAtividades;
import controleInterno.cci.CtrlInterno;
import controleAtividades.cdp.Atividade;
import controleAtividades.cdp.NivelAtividade;
import controleInterno.cdp.Colaborador;
import controleInterno.cdp.TipoAtividade;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Row;
import org.zkoss.zul.Rows;
import org.zkoss.zul.Window;

public class PagAlocarColaboradores extends GenericForwardComposer
{
    private Window winAlocarColaboradores;
    private Listbox listaEsquerda, listaDireita;
    
    private Atividade obj;

    CtrlAtividades ctrlA = CtrlAtividades.getInstance();
    CtrlInterno ctrlI = CtrlInterno.getInstance();
    
    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
    }
    
    public void onCreate$winAlocarColaboradores() {

        //if feito para verificar se existe algum usuario logado, se nao existir eh redirecionado para o login
        if (Executions.getCurrent().getSession().getAttribute("usuario") == null)
        {
            Executions.sendRedirect("/");
            winAlocarColaboradores.detach();
        }
        else
        {
            obj = (Atividade) arg.get("atividade");
            
            if (obj != null)
            {
                List<Colaborador> colaboradores, colaboradoresAlocados;
                
                //preenchendo lista de colaboradores disponiveis
                
                if (obj.getNivel() == NivelAtividade.GRUPO)
                {
                    colaboradores = ctrlA.obterColaboradoresGrupo(obj);
                }
                else
                {
                    colaboradores = ctrlI.obterColaboradores();
                }
                
                colaboradoresAlocados = ctrlA.obterColaboradoresAlocados(obj);
                
                if (colaboradores != null)
                {
                    if (colaboradoresAlocados != null)
                    {
                        for (int i = 0; i < colaboradores.size(); i++)
                        {
                            if (colaboradoresAlocados.contains(colaboradores.get(i)))
                            {
                                colaboradores.remove(colaboradores.get(i));
                            }
                        }
                        
                        listaEsquerda.setModel(new ListModelList(colaboradores, true));
                        listaDireita.setModel(new ListModelList(colaboradoresAlocados, true));
                    }
                }
            }
            else
            {
                
            }
        }
    }
    
    public void onClick$voltar(Event event)
    {
        //salvando os alocados no banco
        List<Listitem> lista = listaDireita.getItems();
        List<Colaborador> colaboradores = new ArrayList<>();
        
        for (Listitem listitem : lista)
        {
            colaboradores.add((Colaborador) listitem.getValue());
        }
        
        //ctrl.salvarAlocados(colaboradores, obj); //TODO salvar ou editar?
        
        ctrlA.atualizarPopupAlocados(colaboradores);
        
        winAlocarColaboradores.onClose();
    }
}
